package com.hifar.test.test.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hifar.sys.BusiResponse;
import com.hifar.test.report.render.model.HfEnvTaskTestModel;
import com.hifar.test.task.pojo.VO.EquipTestInfoVO;
import com.hifar.test.task.pojo.VO.HfEnvTaskTestVO;
import com.hifar.test.test.pojo.HfEnvTest;
import com.hifar.test.test.pojo.VO.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 委托试验 服务类
 * </p>
 *
 * @author wei
 * @since 2024-12-04 15:51:56
 */
public interface IHfEnvTestService extends IService<HfEnvTest> {

    /**
     * 试验列表查询
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    Page<HfEnvTestVO> pageVO(Page<HfEnvTestVO> page, QueryWrapper<HfEnvTestVO> queryWrapper);

    /**
     * 分页查询委托单下试验列表
     *
     * @param page         分页参数
     * @param queryWrapper 查询条件
     * @return
     */
    Page<HfEnvTest> testListPage(Page<HfEnvTest> page, QueryWrapper<HfEnvTest> queryWrapper);


    /**
     * 试验终止
     *
     * @param testForceEndVO
     */
    void forceEnd(HfEnvTestForceEndVO testForceEndVO);

    /**
     * 试验完成
     *
     * @param testFinishVO
     */
    void finish(HfEnvTestFinishVO testFinishVO);

    /**
     * 试验撤销
     *
     * @param testRevokeVO
     */
    void revoke(HfEnvTestRevokeVO testRevokeVO);

    /**
     * 保存试验数据
     *
     * @param testData
     */
    void saveTestData(HfEnvTestDataVO testData);

    /**
     * 查询试验数据
     * @param id
     * @return
     */
    HfEnvTestDataVO queryTestData(String id);

    /**
     * 查询试验图谱数据
     * @param id
     * @return
     */
    HfEnvTestChartVO queryTestChart(String id);

    /**
     * 试验开始
     * @param testStartVO
     */
    void start(HfEnvTestStartVO testStartVO);

    /**
     * 保存试验图谱
     *
     * @param testChartVO
     */
    void saveTestChart(HfEnvTestChartVO testChartVO);

    /**
     * 查询全部试验数据
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    List<EquipTestInfoVO> queryAllTestInfo(Date startTime, Date endTime);

    /**
     * 查询运行中试验信息
     *
     * @param equipIdList 设备idList
     * @return
     */
    List<EquipTestInfoVO> listRunTest(List<String> equipIdList, Date startTime, Date endTime);

    /**
     * 生成原始记录
     *
     * @param id
     */
    void generateProcessRecord(String id);

    /**
     * 上传原始记录附件
     *
     * @param id     试验id
     * @param fileId 附件id
     */
    void replaceTestReport(String id, String fileId);

    /**
     * 删除原始记录
     *
     * @param id 试验id
     */
    void delTestReport(String id);


    /**
     * 查询委托下试验列表
     *
     * @param entrustId 委托id
     * @return
     */
    List<HfEnvEntrustTestVO> testListByEntrustId(String entrustId);

    /**
     * 查询工控委托下试验列表
     * @param gkEntrustId 工控委托id
     * @return
     */
    List<HfEnvTest> listByGkEntrustId(String gkEntrustId);
    /**
     * 查询委托下试验列表
     *
     * @param taskId 委托id
     * @return
     */
    List<HfEnvEntrustTestVO> testListByTaskId(String taskId);

    /**
     * 保存曲线图片
     * @param saveCurveVO
     */
    void saveCurve(HfEnvSaveCurveVO saveCurveVO);

    /**
     *
     * @param taskId
     * @return
     */
    List<HfEnvTaskTestVO> reportListVoByTaskId(String taskId);


    /**
     * 根据试验id查询试验
     *
     * @param testIdList
     * @return
     */
    List<HfEnvTaskTestModel> listRenderModelByIds(List<String> testIdList);

    /**
     * 查询试验终止详情
     *
     * @param id 试验id
     * @return
     */
    HfEnvTestForceEndVO queryForceEndById(String id);

    /**
     * 导出excel
     * @param queryWrapper
     * @return
     */
    BusiResponse exportExcel(QueryWrapper<HfEnvTestVO> queryWrapper);
}
